
#include "Perus.h"



void OBJEKTI::Alusta( char *TiedostoNimi )
{
    ifstream Tiedosto( TiedostoNimi );
    
    char Otsikko[512];
    char Sana[512];
    
    if(Tiedosto.is_open())
    {
        for(bool Valmista = false; !Valmista;)
        {
            Tiedosto.ignore( 1000, '#' );
            Tiedosto.getline( Otsikko, 99, ';');

            if(strcmp( Otsikko, "3D_MALLI") == 0)
            {
                Tiedosto.ignore( 99, '>' );
                Tiedosto.getline( Sana, 99, '\n' );
                Malli3DNimi = new char [strlen(Sana)];
                for(int i=0; i<strlen(Sana);i++)
                    Malli3DNimi[i] = Sana[i];
                PyyhiLoppu(Malli3DNimi, ';'); //poistaa pienen bugin...
            }

            if(strcmp( Otsikko, "TEKSTUURI") == 0)
            {
                Tiedosto.ignore( 99, '>' );
                Tiedosto.getline( Sana, 99, '\n' );
                TekstuurinNimi = new char [strlen(Sana)];
                for(int i=0; i<strlen(Sana);i++)
                    TekstuurinNimi[i] = Sana[i];
                PyyhiLoppu(TekstuurinNimi, ';');
            }

            if(strcmp( Otsikko, "END_OF_FILE") == 0)
            {
                Valmista = true;
            }            
        }
        Asento = NollaAsento;
        Sijainti = NollaSijainti;
        AsentoM = YksikkoMatriisiM4x4;
        Skaalaus = 1;
        NimetTarkistettu = false;
    }
}

void OBJEKTI::Alusta( OBJEKTI ToinenObjekti )
{
    *this = ToinenObjekti;
    Asento = NollaAsento;
    Sijainti = NollaSijainti;
}










void GRAFIIKKA::LisaaObjekti( OBJEKTI &UusiObjekti)
{
    if( !UusiObjekti.NimetTarkistettu )
    {
        for(unsigned int i=0; i<Malli3DLKM; i++)
        {   
            if(strcmp( Malli3DPuskuri[i].NimiID, UusiObjekti.Malli3DNimi ) == 0)
            {
                UusiObjekti.Malli3DInd = i; break;
            }   
        }
        
        for(int i=0; i<TekstuurienLKM; i++)
        {
            if(strcmp( TekstuuriPuskuri[i].NimiID, UusiObjekti.TekstuurinNimi ) == 0)
            {
                UusiObjekti.TekstuuriInd = i;
            }
        }
        
    }
    if(ObjektienLKM == 0)
    {
        delete [] ObjektiPuskuri;
        ObjektiPuskuri = NULL;
        ObjektiPuskuri = new OBJEKTI *[2000];
    }
    ObjektiPuskuri[ObjektienLKM] = &UusiObjekti;
    ObjektienLKM++;
}

void GRAFIIKKA::TyhjennaObjektiPuskuri()
{
    delete [] ObjektiPuskuri;
    ObjektiPuskuri = NULL;
    ObjektienLKM = 0;

}











